Some computer systems have endeavored to provide processor and memory support for complex data structures. For example, some structured memory systems provide support for sparse arrays as well as automatic memory and reference management. However, hardware data structure support can introduce extra complexity and overhead relative to a specialized software data structure for each possible use.
Computer systems are moving to support an increasing number of parallel executing processor cores, allowing greater concurrency. This can increase the difficulty of efficiently accessing software data structures. There is a need to deal with concurrent access, to ensure that copies are consistent, that updates do not interfere, and that complex updates can be performed atomically.